////////////////////////////////////////////////////////////////////////////////
// Filename: bone.h
////////////////////////////////////////////////////////////////////////////////
#ifndef _BONE_H_
#define _BONE_H_

#include <windows.h>
#include <xnamath.h>
#include <string>
#include <vector>

class Mesh;
class TiXmlElement;

class Bone
{
public:
	Bone();
	Bone(const Bone&);
	Bone operator=(Bone const&);
	~Bone();

	void Initialize(TiXmlElement* boneElement);

	std::string GetName();

	std::string GetParentName();
	void SetParent(Bone* pParent);
	bool IsMain();
	void AddSubBone(Bone* pBone);
	void SetMeshIndex(int pIndex);
	int GetMeshIndex();
	Bone* GetParent();

	std::vector<Bone*>::iterator GetSubBonesBegin();
	std::vector<Bone*>::iterator GetSubBonesEnd();
private:
	bool mMain;
	std::string mName;
	std::string mParentBoneName;
	Bone* mParent;
	std::vector<Bone*> mSubBones;
	int mMeshIndex;
};

#endif
